package com.itheima.tlias.mapper.sql;

import com.itheima.tlias.model.entity.Dept;
import org.apache.ibatis.jdbc.SQL;
import org.springframework.util.ObjectUtils;

/**
 * @author byzhao
 * @created 2024-04-05 16:45:28
 * @describtion
 */
public class DeptMapperSqlProvider {

    /**
     * 部门表中通用列
     */
    public static final String COMMON_COLUMN = "id, name, create_time, update_time";

    /**
     * 表名
     */
    public static final String TABLE_NAME = "dept";


    public String updata(Dept dept){
        SQL update = new SQL().UPDATE(TABLE_NAME);
        if (!ObjectUtils.isEmpty(dept.getName())) {

            update.SET("name = #{name}");
        }
        update.SET("update_time = NOW()");
        return update.WHERE("id=#{id}").toString();
    }

    public String deptById(Integer id){
        return new SQL().SELECT(COMMON_COLUMN).FROM(TABLE_NAME)
                .WHERE("id=#{id}").toString();
    }

    /**
     * 给DeptMapper 接口中 insertDept 方法提供SQL 语句
     *
     * @param dept 部门
     * @return SQL
     */
    public String insertDept(Dept dept) {
        SQL sql = new SQL().INSERT_INTO(TABLE_NAME);
        if (!ObjectUtils.isEmpty(dept.getName())) {
            sql.INTO_COLUMNS("name");
            sql.INTO_VALUES("#{name}");
        }
        if (!ObjectUtils.isEmpty(dept.getCreateTime())) {
            sql.INTO_COLUMNS("create_time");
            sql.INTO_VALUES("#{createTime}");
        }
        if (!ObjectUtils.isEmpty(dept.getUpdateTime())) {
            sql.INTO_COLUMNS("update_time");
            sql.INTO_VALUES("#{updateTime}");
        }
        return sql.toString();
    }

    /**
     * 给DeptMapper 接口中 deleteById 方法提供SQL 语句
     *
     * @param id 部门id
     * @return SQL
     */
    public String deleteById(Integer id) {
        return new SQL().DELETE_FROM(TABLE_NAME)
                .WHERE("id=#{id}").toString();
    }


    /**
     * 给DeptMapper 接口中 selectDepts 方法提供SQL 语句
     *
     * @return 生成SQL
     */
    public String selectDepts() {
        return new SQL().SELECT(COMMON_COLUMN)
                .FROM(TABLE_NAME)
                .toString();
    }

}
